package com.love.marriage.eventInfo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.love.marriage.common.vo.BaseVo;
import com.love.marriage.eventRegistrationInfo.vo.EventRegistrationInfoVo;
import com.love.marriage.oss.vo.FileInfoVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * description:  活动表Vo
 * author:       alex
 * createDate:   2024-10-15 04:26:31
 * version:      1.0.0
 */
@Getter
@Setter
@Accessors(chain = true)
@Schema(name = "EventInfoVo", description = "活动表Vo")
public class EventInfoVo extends BaseVo<EventInfoVo>{

    @Schema(description = "活动标题", type = "String", implementation = String.class)
    private String title;

    @Schema(description = "活动描述", type = "String", implementation = String.class)
    private String description;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    @Schema(description = "活动开始时间(yyyy-MM-dd HH:mm:ss)", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime startTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    @Schema(description = "活动结束时间(yyyy-MM-dd HH:mm:ss)", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime endTime;

    @Schema(description = "费用类型（如AA, 免费等）", type = "String", implementation = String.class)
    private String feeType;

    @Schema(description = "活动金额，0表示免费", type = "BigDecimal", implementation = BigDecimal.class)
    private BigDecimal feeAmount;

    @Schema(description = "参与人数", type = "Integer", implementation = Integer.class)
    private Integer participantsCount;

    @Schema(description = "活动图片ID", type = "String", implementation = String.class)
    private String images;

    @Schema(description = "活动图片列表", type = "Array", implementation = FileInfoVo.class)
    private List<FileInfoVo> imagesList;

    @Schema(description = "省id", type = "Integer", implementation = Integer.class)
    private Integer provinceId;

    @Schema(description = "省名称", type = "String", implementation = String.class)
    private String provinceName;

    @Schema(description = "城市id", type = "Integer", implementation = Integer.class)
    private Integer cityId;

    @Schema(description = "城市名称", type = "String", implementation = String.class)
    private String cityName;

    @Schema(description = "区id", type = "Integer", implementation = Integer.class)
    private Integer districtId;

    @Schema(description = "区名称", type = "String", implementation = String.class)
    private String districtName;

    @Schema(description = "活动地点", type = "String", implementation = String.class)
    private String eventLocation;

    @Schema(description = "活动地点", type = "String", implementation = String.class)
    private String eventLocationName;

    @Schema(description = "活动图片信息(用于查看)", type = "String", implementation = FileInfoVo.class)
    private FileInfoVo fileInfoVo;

    @Schema(description = "活动时间从", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime startTimeFrom;

    @Schema(description = "活动时间到", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime startTimeTo;

    @Schema(description = "是否报名", type = "Boolean", implementation = Boolean.class)
    private Boolean registered;

    @Schema(description = "报名人数", type = "Integer", implementation = Integer.class)
    private Integer registrationCount;

    @Schema(description = "活动状态（0：报名中，3：筹备中，1：进行中，2：已结束）", type = "Integer", implementation = Integer.class)
    private Integer status;

    @Schema(description = "注意事项", type = "String", implementation = String.class)
    private String remarks;

    @Schema(description = "报名者")
    private List<EventRegistrationInfoVo>  eventRegistrationInfoVos;

    @Schema(description = "报名标识，当前时间超过报名截止时间为false", type = "Boolean", implementation = Boolean.class)
    private Boolean canRegistrateFlag;
}
